package business.service.exchange;

import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

import android.content.Context;
import android.os.Handler;
import android.util.Log;

public class BDLocationService {
	private String tag = "百度定位";
	private LocationClient mLocationClient = null;
	private BDLocationServiceListener myListener = null;
	
	/*定位成功*/
	public final static int LOCATE_SUCCESS = 0;
	/*定位失败*/
	public final static int LOCATE_FAIL = 1;
	
	/**
	 * @param context 上下文
	 * @param handler 消息队列  
	 * 消息的格式:msg.what 消息的类型 
	 *			msg.obj 具体的消息 
	 */
	public BDLocationService(Context context, Handler handler){
		myListener = new BDLocationServiceListener(handler);
		
		mLocationClient = new LocationClient(context); // 声明LocationClient类
		mLocationClient.registerLocationListener(myListener); // 注册监听函数

		LocationClientOption option = new LocationClientOption();

		option.setOpenGps(true);
		option.setAddrType("all");// 返回的定位结果包含地址信息
		option.setCoorType("gcj02");// 返回的定位结果是百度经纬度,默认值gcj02
		option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
		option.disableCache(true);// 禁止启用缓存定位
		option.setPoiNumber(5); // 最多返回POI个数
		option.setPoiDistance(1000); // poi查询距离
		option.setPoiExtraInfo(true); // 是否需要POI的电话和地址等详细信息
		mLocationClient.setLocOption(option);
	}
	
	
	/**
	 * 结束定位
	 */
	public void stop(){
		mLocationClient.stop();
		Log.i(tag, "定位结束");
	}
	
	/**
	 * 开始定位
	 */
	public void start() {
		Log.i(tag, "定位开始");
		LocationClient mLocClient = mLocationClient;
		if (!mLocClient.isStarted())
			mLocClient.start();
		if (mLocClient != null && mLocClient.isStarted())
			mLocClient.requestLocation();
		else
			Log.i(tag, "locClient is null or not started");
	}
}
